package com.ruoyi.ucar.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.obs.services.model.AccessControlList;
import com.ruoyi.ucar.boreq.SysFileBoReq;
import com.ruoyi.ucar.boresp.ObsImageBoResp;
import com.ruoyi.ucar.domain.SysFileData;
import com.ruoyi.ucar.domain.SysFileMain;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 文件附件主Service接口
 * 
 * @author sungangbin
 * @date 2025-05-13
 */
public interface ISysFileMainService extends IService<SysFileMain>
{
    /**
     * 查询文件附件主
     * 
     * @param id 文件附件主主键
     * @return 文件附件主
     */
    public SysFileMain selectSysFileMainById(Long id);

    /**
     * 查询文件附件主列表
     * 
     * @param sysFileMain 文件附件主
     * @return 文件附件主集合
     */
    public List<SysFileMain> selectSysFileMainList(SysFileMain sysFileMain);

    /**
     * 新增文件附件主
     * 
     * @param sysFileMain 文件附件主
     * @return 结果
     */
    public int insertSysFileMain(SysFileMain sysFileMain);

    /**
     * 修改文件附件主
     * 
     * @param sysFileMain 文件附件主
     * @return 结果
     */
    public int updateSysFileMain(SysFileMain sysFileMain);

    /**
     * 批量删除文件附件主
     * 
     * @param ids 需要删除的文件附件主主键集合
     * @return 结果
     */
    public int deleteSysFileMainByIds(Long[] ids);

    /**
     * 删除文件附件主信息
     * 
     * @param id 文件附件主主键
     * @return 结果
     */
    public int deleteSysFileMainById(Long id);

    public String saveSysFile(SysFileBoReq sysFileVoReq );

    public String saveSysFile(MultipartFile file ) throws IOException;

    public String batchSaveSysFile(List<SysFileBoReq> sysFileVoReqList );

    /**
     * 华为云上传文件
     * @param fileName
     * @param fileInputStream
     * @return
     */
    public  String obsUploadFile(String fileName, InputStream fileInputStream, AccessControlList accessControlList);

    /**
     * 华为云下载文件
     *
     * @param fileMainUuid
     */
    public void obsDownLoadFile(String fileMainUuid, HttpServletResponse response);

    public void obsDownLoadFile2(String fileDataUuid, HttpServletResponse response);

    public ObsImageBoResp obsDownloadImageToBase64String(String fileMainUuid);

    SysFileData saveSysFile(MultipartFile file, AccessControlList accessControlList) throws IOException;

    SysFileMain saveSysFile(List<MultipartFile> files,AccessControlList accessControlList) throws IOException;

}
